package com.colorlight.cloud.gateway.api.message.constraint.event;

import com.colorlight.cloud.common.exception.BaseException;
import com.colorlight.cloud.gateway.api.message.constraint.schedule.ScheduleActions;
import com.google.protobuf.ByteString;

import static com.colorlight.cloud.common.model.BaseResultCodeEnum.EVENT_NOT_DELIVERED;

/**
 * @author Demon
 * 内置class与 proto转得 class转换
 * 这里是有部分耦合的
 * 这个项目给定 mqtt+protobuf 项目中一定要实现：实体类和protobuf类得相互转化
 * 这个接口为实现类提供规范
 * byteConvertObject方法会将 属性注入当前对象，会覆盖当前对象得值
 */
public interface Event extends ScheduleActions {
	
	
	/**
	 * 实体类转消息:下发消息时实现
	 * 部分消息不是指令消息  不需要实现
	 * 下发消息 将input 转为对象
	 *
	 * @return 将对象转为 ByteString
	 **/
	@Override
	default ByteString objectConvertBytes() {
		throw new BaseException(EVENT_NOT_DELIVERED);
	}
	
}
